import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @ClassName Day1LC989
 * @Description 989. 数组形式的整数加法  https://leetcode-cn.com/problems/add-to-array-form-of-integer/
 * @Author clockTown
 * @Date 2021/9/10 21:00
 * @Version 1.0
 */
public class Day1LC989 {
}


class Day1LC989V0 {
    public List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> res = new ArrayList<>();
        //逆序遍历数组，每次将位置i的元素与k求和得到新的k，将和的最低位(k % 10)替换num[i]，同时k移除最低位(k /= 10);
        for (int i = num.length - 1; i >= 0; i--) {
            k = num[i] + k;
            num[i] = k % 10;
            k = k / 10;
            //如果遍历时k为0,则无需继续求和，直接退出遍历
            if (k == 0) break;
        }
        List<Integer> list = new ArrayList<>();
        //如果k在遍历后不为0，例如num=[0], k =100,则将100转换为列表[1,0,0]
        while (k != 0){
            list.add(k % 10);
            k /= 10;
        }
        //将list的元素逆序存入res列表中
        for (int i = list.size() - 1; i >= 0; i--) {
            res.add(list.get(i));
        }
        //将求和后的num元素添加到res列表中
        for (int i : num) {
            res.add(i);
        }
        return res;
    }
}